package domain.entities;

import java.util.HashSet;
import java.util.Set;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import static javax.persistence.GenerationType.IDENTITY;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.JoinColumns;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.Table;

/**
 * Rcostudyprogresstracking entity. @author MyEclipse Persistence Tools
 */
@Entity
@Table(name = "rcostudyprogresstracking", catalog = "bms")
public class Rcostudyprogresstracking implements java.io.Serializable {

	// Fields

	private Integer id;
	private ProtocoloCentro protocoloCentro;
	private Integer cantCiclosVisitas;
	private Integer cantidadVisitasParaActualizar;
	private Integer comentarios;
	private String country;
	private String droga;
	private Integer pi;
	private Integer ptNumber;
	private String siteMonitor;
	private Integer visitasPendientesSdv;
	private Integer visitasPendientesSdvtotal;
	private Integer visitasPendientesTao;
	private Set<Progresstrackingfollowup> progresstrackingfollowups = new HashSet<Progresstrackingfollowup>(
			0);

	// Constructors

	/** default constructor */
	public Rcostudyprogresstracking() {
	}

	/** minimal constructor */
	public Rcostudyprogresstracking(ProtocoloCentro protocoloCentro) {
		this.protocoloCentro = protocoloCentro;
	}

	/** full constructor */
	public Rcostudyprogresstracking(ProtocoloCentro protocoloCentro,
			Integer cantCiclosVisitas, Integer cantidadVisitasParaActualizar,
			Integer comentarios, String country, String droga, Integer pi,
			Integer ptNumber, String siteMonitor, Integer visitasPendientesSdv,
			Integer visitasPendientesSdvtotal, Integer visitasPendientesTao,
			Set<Progresstrackingfollowup> progresstrackingfollowups) {
		this.protocoloCentro = protocoloCentro;
		this.cantCiclosVisitas = cantCiclosVisitas;
		this.cantidadVisitasParaActualizar = cantidadVisitasParaActualizar;
		this.comentarios = comentarios;
		this.country = country;
		this.droga = droga;
		this.pi = pi;
		this.ptNumber = ptNumber;
		this.siteMonitor = siteMonitor;
		this.visitasPendientesSdv = visitasPendientesSdv;
		this.visitasPendientesSdvtotal = visitasPendientesSdvtotal;
		this.visitasPendientesTao = visitasPendientesTao;
		this.progresstrackingfollowups = progresstrackingfollowups;
	}

	// Property accessors
	@Id
	@GeneratedValue(strategy = IDENTITY)
	@Column(name = "id", unique = true, nullable = false)
	public Integer getId() {
		return this.id;
	}

	public void setId(Integer id) {
		this.id = id;
	}

	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumns( {
			@JoinColumn(name = "PROTOCOLO_CENTROCENTROid", referencedColumnName = "CENTROid", nullable = false),
			@JoinColumn(name = "protocolo_centroprotocolo_compromisopaisprotocoloid", referencedColumnName = "protocolo_compromisopaisprotocoloid", nullable = false),
			@JoinColumn(name = "protocolo_centroprotocolo_compromisopaiscompromisopaisid", referencedColumnName = "protocolo_compromisopaiscompromisopaisid", nullable = false) })
	public ProtocoloCentro getProtocoloCentro() {
		return this.protocoloCentro;
	}

	public void setProtocoloCentro(ProtocoloCentro protocoloCentro) {
		this.protocoloCentro = protocoloCentro;
	}

	@Column(name = "cantCiclosVisitas")
	public Integer getCantCiclosVisitas() {
		return this.cantCiclosVisitas;
	}

	public void setCantCiclosVisitas(Integer cantCiclosVisitas) {
		this.cantCiclosVisitas = cantCiclosVisitas;
	}

	@Column(name = "cantidadVisitasParaActualizar")
	public Integer getCantidadVisitasParaActualizar() {
		return this.cantidadVisitasParaActualizar;
	}

	public void setCantidadVisitasParaActualizar(
			Integer cantidadVisitasParaActualizar) {
		this.cantidadVisitasParaActualizar = cantidadVisitasParaActualizar;
	}

	@Column(name = "comentarios")
	public Integer getComentarios() {
		return this.comentarios;
	}

	public void setComentarios(Integer comentarios) {
		this.comentarios = comentarios;
	}

	@Column(name = "country")
	public String getCountry() {
		return this.country;
	}

	public void setCountry(String country) {
		this.country = country;
	}

	@Column(name = "droga")
	public String getDroga() {
		return this.droga;
	}

	public void setDroga(String droga) {
		this.droga = droga;
	}

	@Column(name = "pi")
	public Integer getPi() {
		return this.pi;
	}

	public void setPi(Integer pi) {
		this.pi = pi;
	}

	@Column(name = "ptNumber")
	public Integer getPtNumber() {
		return this.ptNumber;
	}

	public void setPtNumber(Integer ptNumber) {
		this.ptNumber = ptNumber;
	}

	@Column(name = "siteMonitor")
	public String getSiteMonitor() {
		return this.siteMonitor;
	}

	public void setSiteMonitor(String siteMonitor) {
		this.siteMonitor = siteMonitor;
	}

	@Column(name = "visitasPendientesSDV")
	public Integer getVisitasPendientesSdv() {
		return this.visitasPendientesSdv;
	}

	public void setVisitasPendientesSdv(Integer visitasPendientesSdv) {
		this.visitasPendientesSdv = visitasPendientesSdv;
	}

	@Column(name = "visitasPendientesSDVTotal")
	public Integer getVisitasPendientesSdvtotal() {
		return this.visitasPendientesSdvtotal;
	}

	public void setVisitasPendientesSdvtotal(Integer visitasPendientesSdvtotal) {
		this.visitasPendientesSdvtotal = visitasPendientesSdvtotal;
	}

	@Column(name = "visitasPendientesTAO")
	public Integer getVisitasPendientesTao() {
		return this.visitasPendientesTao;
	}

	public void setVisitasPendientesTao(Integer visitasPendientesTao) {
		this.visitasPendientesTao = visitasPendientesTao;
	}

	@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "rcostudyprogresstracking")
	public Set<Progresstrackingfollowup> getProgresstrackingfollowups() {
		return this.progresstrackingfollowups;
	}

	public void setProgresstrackingfollowups(
			Set<Progresstrackingfollowup> progresstrackingfollowups) {
		this.progresstrackingfollowups = progresstrackingfollowups;
	}

}